/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.dao;

import br.com.classes.Movimento;
import br.com.classes.RelLivroCaixa;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Luiz Felipe
 */
public class RelatorioDao {
      Connection con = null;

    public RelatorioDao() {
        
        con = Conecta.getConnection();
}
       
     public List<RelLivroCaixa> RelatorioPDF(int codcaixa, String data, String datafim) {
         
         System.out.println(data + " sql- "+ datafim);
         
        List<RelLivroCaixa> lista = new ArrayList<RelLivroCaixa>();
        try {
        
        String sql = "CALL rel_caixa_entidade (?, ?, ?);";
                     
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setInt(1, codcaixa);
stmt.setString(2, data);
stmt.setString(3, datafim);
            System.out.println(stmt);
ResultSet rs = stmt.executeQuery();
     
        while (rs.next()) {

                RelLivroCaixa r = new RelLivroCaixa();
                r.setData_mov(rs.getDate("Data"));
                r.setMov_historico(rs.getString("Historico"));
                r.setConta(rs.getString("Conta"));
                r.setCredito(rs.getDouble("Credito"));
                r.setDebito(rs.getDouble("Debito"));
                r.setSaldoini(rs.getDouble("Saldo Inicial"));
                r.setSaldo(rs.getDouble("Saldo"));
                System.out.println(r.getMov_historico());
                lista.add(r);
                System.out.println("while");
            }
        } catch (SQLException ex) {
        }
         System.out.println("saio");
        return lista;
    } 
     
     public List<Movimento> RelMovPorEntidade (int codentidade, String data, String datafim) {
         
         System.out.println(data + " sql- "+ datafim);
         
        List<Movimento> listaMov = new ArrayList<Movimento>();
        try {
        
        String sql = "SELECT `cod_movimento`,`data`,`mov_historico`,`credito`,`debito` FROM `movimento` WHERE `mov_entidade` = ? and `data_mov` between ? and ? order by `data` asc;";
     
                PreparedStatement stmt = con.prepareStatement(sql);
                stmt.setInt(1, codentidade);
                stmt.setString(2, data);
                stmt.setString(3, datafim);
                System.out.println(stmt);
                ResultSet rs = stmt.executeQuery();

        while (rs.next()) {

                Movimento r = new Movimento();
                r.setCod_movimento(rs.getInt("cod_movimento"));
                r.setData_mov(rs.getDate("data"));
                r.setMov_historico(rs.getString("mov_historico"));
                r.setCredito(rs.getDouble("credito"));
                r.setDebito(rs.getDouble("debito"));
          
                System.out.println(r.getMov_historico());
                listaMov.add(r);
            }
        } catch (SQLException ex) {
        }
        return listaMov;
     }
     
        public Double SaldoMovPorEntidade (int codentidade, String data, String datafim) {
         
         System.out.println(data + " sql- "+ datafim);     
       Double saldo = null;
        try {
        
        String sql = "SELECT sum(`credito`+`debito`) saldo  FROM `movimento` WHERE `mov_entidade` = ? and `data_mov` between ? and ?";
     
                PreparedStatement stmt = con.prepareStatement(sql);
                stmt.setInt(1, codentidade);
                stmt.setString(2, data);
                stmt.setString(3, datafim);
                System.out.println(stmt);
                ResultSet rs = stmt.executeQuery();

        while (rs.next()) {

             saldo = rs.getDouble("saldo");
            
            }
        } catch (SQLException ex) {
        }
        return saldo;
     }
     
     
}